#include "remove.h"


/* inicializa a avail list*/
void cria_avail () {
	FILE * avail_head;
	avail_head = fopen ("avail_head.dat", "w");
	fprintf(avail_head, "%.3d",FIM_AVAIL);
	fclose(avail_head);
}

/* remove a obra desejada */
void remocao(pNo_PK obras, int tamanho) {
	
		FILE *avail_head;
		FILE *base;

		char aux[6], titulo[(tam_titulo)+1];
	int atual, i;
	pNo_PK busca;

	__fpurge(stdin);
	printf("Digite o titulo da obra a ser removida: ");
	remove_espacos();
	fgets(titulo, tam_titulo, stdin);
	completa_espacos(titulo, tam_titulo);

	if(busca = bsearch (titulo, obras, tamanho, sizeof (struct No_PK), compara)) {

		/* armazena na string aux o nrr do comeco da avail list */
			avail_head = fopen("avail_head.dat", "r+");
			fgets(aux, 5, avail_head);
			atoi(aux);
		
			/* coloca o nrr do arquivo removido no comeco da avail list */
			rewind(avail_head);
			fprintf(avail_head,"%.4d", busca->nrr);
			fclose(avail_head);

			/* coloca o nrr que estava no comeco da avail list para o local do registro removido */
			base = fopen("base25.dat", "r+");
			atual = ((busca->nrr) - 1) * tam_total;
			fseek(base, atual, SEEK_SET);
			fputs(aux, base);

		fprintf(base, "*");
		for(i=0; i<(tam_total-5); i++) {
			fputs(" ", base);
		}
		
			
			printf("\nObra removida com sucesso!\n\n");
			
			fclose(base);
	}


	else {	
		printf("\nNenhuma obra correspondente encontrada.\n\n");
	}

}

